/***********************************************************************
* Copyright  2023 客户公司名称
* @URL: 
* @ProjectName: 项目名称
* @Description: 批处理任务 :将客户的公司地址字段值给清空
* Modification Log :
------------------------------------------------------------------------
* Developer                   Date                   Description
* ----------------------------------------------------------------------
* 陈秋雨				2023-10-22                  批处理任务 :将客户的公司地址字段值给清空
***********************************************************************/
global class ClearAccountAddressBatch implements Database.Batchable<SObject>, Database.Stateful{
    // 接收要更新的客户集合
    private List<Account> accountUpdateList;

    public ClearAccountAddressBatch(List<Account> accountUpdateList) {
        this.accountUpdateList = accountUpdateList;
    }


    global Database.QueryLocator start(Database.BatchableContext bc) {
        // 统计要更新的客户Id
        List<Id> accountIds = new List<Id>();
        for (Account acc : accountUpdateList) {
            accountIds.add(acc.Id);
        }
        // 查询需要处理的客户记录
        String query = 'SELECT Id, company_address__c FROM Account WHERE Id in :accountIds';
        return Database.getQueryLocator(query);
    }

    global void execute(Database.BatchableContext BC, list<Sobject> scope) {
        // 保存要更新的Account
        List<Account> accountUpdateList = new List<Account>();
        for (sObject obj : scope) {
            Account acc = (Account) obj;
            // 将客户公司地址字段值赋值为null
            acc.company_address__c = null;
            accountUpdateList.add(acc);
        }
        // 更新客户记录
        update accountUpdateList;
    }

    global void finish(Database.BatchableContext BC) {
        //批处理完成后要进行的操作
    }
}